package ch.jamme.conf;

import java.util.*;

/**
 * Introspects an Object transforming its properties in a collection of name/value pairs
 * @author Mario Fusco
 */
public interface ObjectIntrospector {

	/**
	 * Introspects an Object transforming its properties in a collection of name/value pairs
	 * @param fieldSuppressionStrategy The strategy used to decide if a given field should be suppressed or not
	 * @param normalizedClass The object's normalized Class (the one introspected to discover its fields)
	 * @param object The object to be marshalled
	 * @return A Map having as key the name of the introspected field to be marshalled and as value the correspondant field's value
	 */
	Map<String, Object> introspect(FieldSuppressionStrategy fieldSuppressionStrategy, Class<?> normalizedClass, Object object);
}
